iT邦幫忙

2025 iThome 鐵人賽

DAY 19
0
AI & Data

30 天入門常見的機器學習演算法系列 第 19

(Day 19) 神經元 (Neuron)

  • 分享至 

  • xImage
  •  

前一篇我們先介紹了全連接神經網絡 (Fully Connected Neural Network),相信大家還是不太清楚這是什麼,接下來會用幾天的篇幅一一介紹相關的專有名詞,若要理解神經網路,必須先從最小的組成單位 —— 神經元 (Neuron) 開始。

人工神經元的靈感來自於生物神經科學中「神經元」的概念: 人腦中的神經細胞會接收訊號、處理並傳遞訊號給下一個神經元,形成複雜的網絡。人工神經網路 (Artificial Neural Network, ANN) 正是透過數學方式去模擬這樣的運作。

神經元數學模型

一個人工神經元的輸入與輸出過程可以寫成:

$$
z = \sum\limits_{i=1}^{n} w_i x_i + b
$$

$$
a = \sigma(z)
$$

其中:

  • $x_i$: 輸入特徵
  • $w_i$: 權重 (weight),決定輸入的重要性
  • $b$: 偏差 (bias),調整整體的輸入偏移量
  • $\sigma(\cdot)$: 激活函數 (Activation Function),將線性組合轉換為非線性輸出
  • $a$: 神經元的輸出

先不看激活函數的部分,是不是第一眼會覺得好像在哪裡看過? 沒錯就是我們 Day 2 介紹的線性迴歸,所以神經元本身並不是什麼太高級的東西,就是一個線性輸出而已,為了要讓神經元能夠模擬更複雜的非線性關係,才會在線性輸出後再加上激活函數 (激活函數是什麼明天介紹)

神經元的運作流程

以一個簡單的二元分類例子來看

  • 輸入層: 假設有三個特徵 $x_1$, $x_2$, $x_3$
  • 加權求和: 每個特徵乘上權重 $w_i$,再加上偏差 $b$
  • 激活函數:輸入 ReLU 或 Sigmoid,得到輸出 a
  • 傳遞至下一層: 這個輸出作為下一層神經元的輸入

當多層神經元堆疊,就形成所謂的「多層感知機 (MLP)」

實作範例 (用 PyTorch 示範單一神經元)

(要完整的過程,看昨天的全連接神經網絡即可)

這段程式碼展示了「一個神經元」如何運算: 輸入三個特徵,經過線性加權、加上偏差,再通過 Sigmoid 激活函數,最後輸出一個介於 (0,1) 的數值

import torch
import torch.nn as nn

# 定義一個簡單的單層神經元 (3 個輸入 -> 1 輸出)
class SimpleNeuron(nn.Module):
    def __init__(self):
        super(SimpleNeuron, self).__init__()
        self.linear = nn.Linear(3, 1)   # 3 input features, 1 output

    def forward(self, x):
        return torch.sigmoid(self.linear(x))  # 使用 sigmoid 激活

# 建立神經元
neuron = SimpleNeuron()

# 假設輸入三個特徵
x = torch.tensor([[0.5, 0.8, 0.2]])
output = neuron(x)

print("輸入:", x)
print("輸出:", output)

結語

神經元是深度學習的基礎構件。它本身的數學原理不複雜,但一旦大量堆疊並透過反向傳播訓練,就能展現強大的表示能力。

理解神經元,能幫助我們看清楚:

  • 為什麼需要激活函數?
  • 為什麼要有權重與偏差?
  • 為什麼多層網路能捕捉到複雜模式?

接下來,我們將在這個基礎上,進一步介紹其他相關的基礎


上一篇
(Day 18) 全連接神經網絡 (Fully Connected Neural Network)
下一篇
(Day 20) 激活函數 (Activation Function)
系列文
30 天入門常見的機器學習演算法30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言